package com.huellas.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;

import javax.swing.JOptionPane;

import com.huellas.bean.Comprobante;
import com.huellas.bean.ComprobanteDetalle;
import com.huellas.bean.ListadoCitasComprobanteBean;
import com.huellas.util.MysqlHelper;

public class ListadoCitasComprobanteDAO {

	public Collection<ListadoCitasComprobanteBean> ListarCitasComprobante(int codCita, int CodCliente, String opcion){
		Collection<ListadoCitasComprobanteBean> Lista = new ArrayList<ListadoCitasComprobanteBean>();
		ResultSet rs;
		MysqlHelper objDao = new MysqlHelper();
		try {
			rs =objDao.Listar("{call SP_Listar_Citas_ParaComprobantes(?,?,?)}",new Object[]{codCita,CodCliente,opcion});
			while (rs.next()) {
				ListadoCitasComprobanteBean ls = new ListadoCitasComprobanteBean();
				ls.setCita(rs.getInt("Cita"));
				ls.setFecha(objDao.CambiaAFormatoFechaJAVA(rs.getString("Fecha")));
				ls.setHora(rs.getString("Hora"));
				ls.setCodPaciente(rs.getInt("Cod_Paciente"));
				ls.setNomPaciente(rs.getString("Paciente"));
				ls.setCodCliente(rs.getInt("Cod_Cliente"));
				ls.setNomCliente(rs.getString("Cliente"));
				ls.setCodDoctor(rs.getInt("Cod_Doctor"));
				ls.setNomDoctor(rs.getString("Doctor"));
				ls.setEstadoComprobante(rs.getString("Estado_Cita"));
				Lista.add(ls);
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
		return Lista;
	}
	
	public Collection<ListadoCitasComprobanteBean> Listar_Posible_Detalle_Documento(int codCita){
		Collection<ListadoCitasComprobanteBean> Lista = new ArrayList<ListadoCitasComprobanteBean>();
		ResultSet rs;
		MysqlHelper objDao = new MysqlHelper();
		try {

			rs =objDao.Listar("{call SP_Listar_detalles_ParaComprobantes(?)}",new Object[]{codCita});
			while (rs.next()) {
				ListadoCitasComprobanteBean ls = new ListadoCitasComprobanteBean();
				ls.setItem(rs.getInt("item"));
				ls.setDescripcion(rs.getString("Descripcion"));
				ls.setCantidad(rs.getInt("cantidad"));
				ls.setPrecio(rs.getDouble("Precio"));
				ls.setSubTotal(rs.getDouble("Subtotal"));
				ls.setIGV(rs.getDouble("IGV"));
				ls.setTotal(rs.getDouble("Total"));
				Lista.add(ls);
			}
		} catch (Exception e) {	
			JOptionPane.showMessageDialog(null, e.getMessage());
		}

		return Lista;
	}
	
	public String MantenimientoComprobantePago(ListadoCitasComprobanteBean objMant, String Vopc){
		String Respuesta = "";
		ResultSet rs;
		MysqlHelper objDao = new MysqlHelper();
		try {
			rs =objDao.Listar("{call SP_Mantenimiento_Boleta(?,?,?,?,?,?,?,?)}",new Object[]{objMant.getCodComprobante(),objMant.getSerie(),objMant.getFeEmisionComprobante(),
					objMant.getRuc(),objMant.getNumGuia(),objMant.getTipoComprobante(),objMant.getCita(),Vopc});
			while (rs.next()) {
				Respuesta = rs.getString("Respuesta");
			}
		} catch (Exception e) {	
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
		return Respuesta;
	}
	
	public Collection<ListadoCitasComprobanteBean> DatosCabeceraComprobante(int CodBoleta,String Vopc){
		Collection<ListadoCitasComprobanteBean> Lista = new ArrayList<ListadoCitasComprobanteBean>();
		ResultSet rs;
		MysqlHelper objDao = new  MysqlHelper();
		try {
			rs = objDao.Listar("{call SP_ListarDatosBoletaGenerada(?,?)}",new Object[]{CodBoleta,Vopc});
			while(rs.next()){
				ListadoCitasComprobanteBean objLista = new ListadoCitasComprobanteBean();
				objLista.setCodComprobante(rs.getInt("Code"));
				objLista.setSerie(rs.getString("Serie"));
				objLista.setFeEmisionComprobante(objDao.CambiaAFormatoFechaJAVA(rs.getString("fechaEmision")));
				objLista.setRuc(rs.getString("RUC"));
				objLista.setNumGuia(rs.getInt("NumGuia"));
				objLista.setTipoComprobante(rs.getString("Tipo"));
				objLista.setCita(rs.getInt("Cocita"));
				objLista.setCodCliente(rs.getInt("Cod_cliente"));
				objLista.setNomCliente(rs.getString("Cliente"));
				objLista.setFecha(objDao.CambiaAFormatoFechaJAVA(rs.getString("FechaCita")));
				objLista.setHora(rs.getString("HoraCita"));
				objLista.setCodPaciente(rs.getInt("Cod_Paciente"));
				objLista.setNomPaciente(rs.getString("paciente"));
				objLista.setCodDoctor(rs.getInt("Cod_Doctor"));
				objLista.setNomDoctor(rs.getString("Doctor"));
				objLista.setTotal(rs.getDouble("Total"));
				objLista.setEstadoComprobante(rs.getString("EstadoCita"));
				
				Lista.add(objLista);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	//JOptionPane.showMessageDialog(null, Lista.size());
		return Lista;
	}
	
	public Collection<ListadoCitasComprobanteBean> DatosDetalleComprobante(int CodBoleta,String Vopc){
		Collection<ListadoCitasComprobanteBean> Lista = new ArrayList<ListadoCitasComprobanteBean>();
		ResultSet rs;
		MysqlHelper objDao = new  MysqlHelper();
		try {
			rs = objDao.Listar("{call SP_ListarDatosBoletaGenerada(?,?)}",new Object[]{CodBoleta,Vopc});
			while(rs.next()){
				ListadoCitasComprobanteBean objLista = new ListadoCitasComprobanteBean();
				objLista.setItem(rs.getInt("Item"));
				objLista.setDescripcion(rs.getString("Descripcion"));
				objLista.setCantidad(rs.getInt("Cantidad"));
				objLista.setPrecio(rs.getDouble("PrecioUnitario"));
				objLista.setSubTotal(rs.getDouble("SubTotal"));
				objLista.setIGV(rs.getDouble("IGV"));
				objLista.setTotal(rs.getDouble("Total"));
				Lista.add(objLista);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return Lista;
	}	
	
	public Collection<ListadoCitasComprobanteBean> ListarCabeceraCitaReporte(int codCita){
		Collection<ListadoCitasComprobanteBean> Lista = new ArrayList<ListadoCitasComprobanteBean>();
		ResultSet rs;
		MysqlHelper objDao = new MysqlHelper();
		try {
			rs =objDao.Listar("{call SP_Listar_Cabecera_Reporte_Cita(?)}",new Object[]{codCita});
			while (rs.next()) {
				ListadoCitasComprobanteBean ls = new ListadoCitasComprobanteBean();
				ls.setCita(rs.getInt("Cita"));
				ls.setFecha(objDao.CambiaAFormatoFechaJAVA(rs.getString("Fecha")));
				ls.setHora(rs.getString("Hora"));
				ls.setCodPaciente(rs.getInt("Cod_Paciente"));
				ls.setNomPaciente(rs.getString("Paciente"));
				ls.setCodCliente(rs.getInt("Cod_Cliente"));
				ls.setNomCliente(rs.getString("Cliente"));
				ls.setCodDoctor(rs.getInt("Cod_Doctor"));
				ls.setNomDoctor(rs.getString("Doctor"));
				ls.setEstadoComprobante(rs.getString("Estado_Cita"));
				Lista.add(ls);
			}
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
		return Lista;
	}
		
	public String RetornaFechaActual(){
		String FechaActual = "";
		ResultSet rs;
		MysqlHelper objDao = new MysqlHelper();
		try {
			rs =objDao.Listar("call RetornaFechaActual",new Object[]{});
			while (rs.next()) {
				FechaActual = objDao.CambiaAFormatoFechaJAVA(rs.getString("Respuesta"));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return FechaActual;
	}
}
